#ifndef  __COMPANY_H__
#define  __COMPANY_H__

#include "employee.h"
#include "list"

class Company
{
    public:
            virtual void add( const Employee* employee);
            virtual Company& operator+=( const Employee* employee);

            virtual void remove( int id);
            virtual Company& operator-=( int id);

            virtual bool contains( int id);
            virtual bool contains( const Employee* employee);
            virtual Employee* find( int id);
            virtual Employee* operator[]( int id);
            virtual std::ostream& print( std::ostream& os) const;

            Company( );
            virtual ~Company( );
    protected:
            
    private:
            std::list< Employee*> db;            
};


std::ostream& operator<<( std::ostream& os, const Company& company);

#endif  /*__COMPANY_H__*/
